<?php

/**
 * reporte actions.
 *
 * @package    rips
 * @subpackage reporte
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 2288 2006-10-02 15:22:13Z fabien $
 */
class reporteActions extends autoreporteActions
{
  public function executeGenerar()
  {
    $this->tablas = array('af_transaccion'=>'Transacciones',
                              'us_usuario'=>'Usuarios',
                 'ad_descripcion_servicio'=>'Descripción de Servicios',
                             'ac_consulta'=>'Consultas',
                        'ap_procedimiento'=>'Procedimientos',
                      'ah_hospitalizacion'=>'Hospitalizaciones',
                             'au_urgencia'=>'Urgencias',
                        'an_recien_nacido'=>'Recien Nacidos',
                          'am_medicamento'=>'Medicamentos',
                        'at_otro_servicio'=>'Otros Servicios');                     
       
    return sfView::SUCCESS;     
  }
  public function executeSeleccionarCampos()
  {
    $this->tabla = $this->getRequestParameter('tabla');
    //echo sfConfig::get('sf_config_dir').'/schema.yml';
    $this->schema = sfYAML::load(sfConfig::get('sf_config_dir').'/schema.yml'); 
    //print_r($this->schema);
  }
  public function executeIngresarNombre()
  {
    $select = $this->getRequestParameter('select');
    $from = $this->getRequestParameter('from');
    $join = $this->getRequestParameter('join');
    
    $s = count($select) - 1;
    $query = "SELECT ";
    for($i=0;$i<$s;$i++)
      $query .= $select[$i]." ,";
    $query .= $select[$s]." ";
    
    $f = count($from) - 1;
    $i=1;
    $query .= "FROM ";
    foreach($from as $tabla)
    {
      if($i<=$f)
       $query .= $tabla." ,";
      else
       $query .= $tabla." ";
      $i++;
    }
    $j = count($join) - 1;
    for($i=0;$i<$j;$i++)
      $query .= "LEFT JOIN ".$join[$i]." ";
    $query .= "LEFT JOIN ".$join[$j]." ";
    
    $this->query = $query;
    $this->select = $select;
    $this->from = $from;
    $this->join = $join;
  }
  public function executeGuardar()
  {
    $this->mensaje="";
    $this->exito = false;
    $query = $this->getRequestParameter('query');
    $nombre = $this->getRequestParameter('nombre');
    $descripcion = $this->getRequestParameter('descripcion');
    $reporte = new Reporte();
    $reporte->setNombre($nombre);
    $reporte->setDescripcion($descripcion);
    $reporte->setQuery($query);
    if($reporte->save())
    {
      $this->mensaje="Reporte guardado exitosamente";
      $this->exito = true;
      $this->reporte_id = $reporte->getId();
    }
    else
      $this->mensaje="Ocurrió un error y el reporte no pudo ser guardado";
  }
  public function executeVer()
  {
    if($this->hasRequestParameter('id'))
    {
      $id = $this->getRequestParameter('id');
      $reporte = ReportePeer::retrieveByPK($id);
      $query = $reporte->getQuery();
      $conexion = Propel::getConnection();
      $sentencia = $conexion->prepareStatement($query);
      $resultset = $sentencia->executeQuery();
      $data = "<table>\n";
      foreach($resultset as $row)
      {
        $data .= "  <tr>\n";
        foreach($row as $column)
        {
          $data .= "    <td>$column</td>\n";
        }
        $data .= "  </tr>\n";
      }
      $data .= "</table>";
      $this->data = $data;
    }      
  }
  public function executeDescargar()
  {
    if($this->hasRequestParameter('id'))
    {
      $id = $this->getRequestParameter('id');
      $reporte = ReportePeer::retrieveByPK($id);
      $query = $reporte->getQuery();
      $conexion = Propel::getConnection();
      $sentencia = $conexion->prepareStatement($query);
      $resultset = $sentencia->executeQuery();
      $data = "";
      foreach($resultset as $row)
      {
        $i = 1;
        //$data .= "  <tr>\n";
        foreach($row as $column)
        {
          $data .= "$column";
          if($i < count($row))
            $data .= "@";
        }
        $data .= "\n";
      }
      
      //$this->data = $data;
      $nombre_archivo = str_replace(' ','_',$reporte->getNombre()).date("Y-m-d").".csv";
      $fp = fopen(sfConfig::get('sf_upload_dir')."/".$nombre_archivo,"w");
      fwrite($fp,$data);
      fclose($fp);
      $this->dir = "";
      //if(sfConfig::get('sf_environment')=="dev")
      //  $this->dir = "../";
      $this->nombre_archivo = $nombre_archivo;

    }
  }
}
